package com.tutorial.bootdemo.enums;

// 导入需要的类和注解
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Optional;

// 使用 @AllArgsConstructor 注解自动生成构造函数
@AllArgsConstructor
// 使用 @Getter 注解自动生成 getter 方法
@Getter
public enum Gender {
    // 定义枚举常量，每个常量都有两个参数：详细描述和数据库值
    BOY("boy", "1"), GIRL("girl", "2");

    // 定义两个属性
    public final String detail;
    public final String dbValue;

    // 静态方法，根据数据库值获取对应的 Gender 枚举常量
    public static Optional<Gender> getGenderByValue(String dbValue) {
        return Arrays.stream(Gender.values())   // 将 Gender 枚举类中的所有枚举常量转换为流
                .filter(g -> g.dbValue.equals(dbValue))   // 过滤出 dbValue 属性与传入的 dbValue 参数相等的枚举常量
                .findFirst();   // 返回第一个满足条件的枚举常量，如果找不到则返回 Optional.empty()

    }
}
